home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / ecryptfs-mount-private < prev    next >
Text File  |  2009-10-22  |  2KB  |  71 lines

  1. #!/bin/sh -e
  2. # This script mounts a user's confidential private folder
  3. #
  4. # Original by Michael Halcrow, IBM
  5. # Extracted to a stand-alone script by Dustin Kirkland <kirkland@canonical.com>
  6. #
  7. # This script:
  8. #  * interactively prompts for a user's wrapping passphrase (defaults to their
  9. #    login passphrase)
  10. #  * checks it for validity
  11. #  * unwraps a users mount passphrase with their supplied wrapping passphrase
  12. #  * inserts the mount passphrase into the keyring
  13. #  * and mounts a user's encrypted private folder
  14.  
  15. PRIVATE_DIR="Private"
  16. WRAPPING_PASS="LOGIN"
  17. PW_ATTEMPTS=3
  18. TEXTDOMAIN="ecryptfs-utils"
  19. MESSAGE=`gettext "Enter your login passphrase:"`
  20.  
  21. if [ -f $HOME/.ecryptfs/wrapping-independent ]; then
  22.     # use a wrapping passphrase different from the login passphrase
  23.     WRAPPING_PASS="INDEPENDENT"
  24.     MESSAGE=`gettext "Enter your wrapping passphrase:"`
  25. fi
  26.  
  27. WRAPPED_PASSPHRASE_FILE="$HOME/.ecryptfs/wrapped-passphrase"
  28. MOUNT_PASSPHRASE_SIG_FILE="$HOME/.ecryptfs/$PRIVATE_DIR.sig"
  29.  
  30. # First, silently try to perform the mount, which would succeed if the appropriate
  31. # key is available in the keyring
  32. if /sbin/mount.ecryptfs_private >/dev/null 2>&1; then
  33.     exit 0
  34. fi
  35.  
  36. # Otherwise, interactively prompt for the user's password
  37. if [ -f "$WRAPPED_PASSPHRASE_FILE" -a -f "$MOUNT_PASSPHRASE_SIG_FILE" ]; then
  38.     tries=0
  39.     stty_orig=`stty -g`
  40.     while [ $tries -lt $PW_ATTEMPTS ]; do
  41.         echo -n "$MESSAGE"
  42.         stty -echo
  43.         LOGINPASS=`head -n1`
  44.         stty $stty_orig
  45.         echo
  46.         if printf "%s\0" "$LOGINPASS" | ecryptfs-insert-wrapped-passphrase-into-keyring "$WRAPPED_PASSPHRASE_FILE" - ; then
  47.             break
  48.         else
  49.             echo `gettext "ERROR:"` `gettext "Your passphrase is incorrect"`
  50.             tries=$(($tries + 1))
  51.             continue
  52.         fi
  53.     done
  54.     if [ $tries -ge $PW_ATTEMPTS ]; then
  55.         echo `gettext "ERROR:"` `gettext "Too many incorrect password attempts, exiting"`
  56.         exit 1
  57.     fi
  58.     /sbin/mount.ecryptfs_private
  59. else
  60.     echo `gettext "ERROR:"` `gettext "Encrypted private directory is not setup properly"`
  61.     exit 1
  62. fi
  63. if grep -qs "$HOME/.Private $PWD ecryptfs " /proc/mounts 2>/dev/null; then
  64.     echo
  65.     echo `gettext "INFO:"` `gettext "Your private directory has been mounted."`
  66.     echo `gettext "INFO:"` `gettext "To see this change in your current shell:"`
  67.     echo "  cd $PWD"
  68.     echo
  69. fi
  70. exit 0
  71.